Codec technology has advanced to the point that analog input and output (I/O) processing in mobile devices determine the limitations in audio and speech quality. Specifically, small loudspeakers with nonlinear characteristics are a major source of audio degradation in terminal devices such as cellular phones, personal digital assistants (PDAs) and laptop computers.
Loudspeakers have two types of distortions: linear distortions (low and high frequency attenuation, resonances, etc.) and nonlinear distortions. The amplitudes and phases of the loudspeaker's frequency response characterize the linear distortion. The effect of linear distortion is to alter the amplitudes and phases of the signal's frequency content. Linear distortion does not add any extra frequencies to the sound and can be compensated using a linear filter with a frequency response that is the inverse of the loudspeaker's linear frequency response.
Nonlinear distortion can lead to a more severe degradation of the sound. Extra frequency components known as harmonics and intermodulation distortions that may not be present in the original sound could appear. These “extra sounds” can alter the original sound in a way that it is perceived as harsh and unnatural. As is well known in the art, sound is produced by the vibration of a loudspeaker's diaphragm or horn. Generally, nonlinear distortions are higher for larger excursions of the loudspeaker's diaphragm, which occur at lower frequencies and also at resonant frequencies of the loudspeaker.
To compensate for the linear and nonlinear distortions in the electro-acoustic conversion, the signal, referred to herein as d(n), is passed through a predistortion filter (also called precompensator, linearizer or equalizer) placed between the audio signal source and the loudspeaker. This arrangement is shown in FIG. 1. Referring to FIG. 1, the moving coil of loudspeaker 103 is driven by a prefiltered signal dpre(n). The prefiltered signal dpre(n) is generated by predistortion filter 102. The filtering performed by predistortion filter 102 is designed to be opposite to the distortion of loudspeaker 103, so that the actual displacement of the moving coil accurately matches the ideal motion prescribed by the original signal d(n) from signal source 101.
Volterra expansions have been used in the art to model the linear (H1) and nonlinear (H2, H3, . . . ) components of loudspeaker's response. FIG. 2 illustrates the second order Volterra model. These components are estimated from a loudspeaker's input and output measurements. Applying sinusoidal signals and measuring the extent to which harmonics or combination tones are generated at the output of the nonlinear system have traditionally been used to measure nonlinear distortion. In contrast to the sinusoidal input approach, a random noise is often used to analyze a loudspeaker's nonlinearities. The random input approach approximates a frequency-multiplexed input such as music or speech and does not require repeating the same experiments by changing the frequency of the input tones. The random input approach usually involves modeling a nonlinear system with a Volterra series representation. A least-squares technique such as the least mean squares (LMS) or recursive least squares (RLS) is then used to compute the parameters of the linear (H1) and the nonlinear (H2, H3, . . . ) components.
In general, the input-output relationship of the loudspeaker in the time-domain is given by a p-th order Volterra expansion as:
                              y          ⁡                      (            n            )                          =                              ∑                          k              =              0                        p                    ⁢                                    H              k                        ⁡                          [                              x                ⁡                                  (                  n                  )                                            ]                                                          (        1        )            where, Hk=hk(m1, m2, m3, . . . mk) is the k-th order Volterra kernel and Hk[x(n)] is given as:
                                          H            k                    ⁡                      [                          x              ⁡                              (                n                )                                      ]                          =                                  ⁢                              ∑                                          m                1                            =              0                                      M              k                                ⁢                                          ⁢                                    ∑                                                m                  2                                =                0                                            M                k                                      ⁢                                                  ⁢                                          ∑                                                      m                    3                                    =                  0                                                  M                  k                                            ⁢                              …                ⁢                                                      ∑                                                                  m                        k                                            =                      0                                                              M                      k                                                        ⁢                                                                                    h                        k                                            ⁡                                              (                                                                              m                            1                                                    ,                                                      m                            2                                                    ,                                                      m                            3                                                    ,                                                      …                            ⁢                                                                                                                  ⁢                                                          m                              k                                                                                                      )                                                              ⁢                                          x                      ⁡                                              (                                                  n                          -                                                      m                            1                                                                          )                                                              ×                                          (                                              n                        -                                                  m                          2                                                                    )                                        ⁢                                          x                      ⁡                                              (                                                  n                          -                                                      m                            3                                                                          )                                                              ⁢                                                                                  ⁢                    …                    ⁢                                                                                  ⁢                                          x                      ⁡                                              (                                                  n                          -                                                      m                            k                                                                          )                                                                                                                                                    (        2        )            
It is generally assumed that loudspeakers can be sufficiently modeled by a second or third order (quadratic) Volterra model. The second order model is a special case of equation (1) and is given as:
                              y          ⁡                      (            n            )                          =                              h            0                    +                                    ∑                              i                =                0                                            M                1                                      ⁢                                                  ⁢                                                            h                  1                                ⁡                                  (                  i                  )                                            ⁢                              x                ⁡                                  (                                      n                    -                    i                                    )                                                              +                                    ∑                                                m                  1                                =                0                                            M                2                                      ⁢                                                  ⁢                                          ∑                                                      m                    2                                    =                  0                                                  M                  2                                            ⁢                                                          ⁢                                                                    h                    2                                    ⁡                                      (                                                                  m                        1                                            ,                                              m                        2                                                              )                                                  ⁢                                  x                  ⁡                                      (                                          n                      -                                              m                        1                                                              )                                                  ⁢                                  x                  ⁡                                      (                                          n                      -                                              m                        2                                                              )                                                                                                          (        3        )            The first term is a constant and is generally assumed to be zero, the second term is the linear response (H1), and the third term is the quadratic nonlinear response (H2).
The loudspeaker model is often used to find a nonlinear predistortion filter that may be placed between the audio signal source and the loudspeaker. Referring back to FIG. 1, ideally, predistortion filter 102 produces a predistorted signal dpre(n) which, when fed to loudspeaker 103, causes the output acoustic signal output by loudspeaker 103 to be an exact replica of the original audio signal d(n). In this case, there has been complete compensation for both the linear and the nonlinear distortions.
Exact compensation of nonlinear distortions requires a predistortion filter that is the exact inverse of the loudspeaker model. Finding the exact inverse of a nonlinear system is not straightforward and poses a challenge in equalizing any nonlinear system including nonlinear loudspeakers. A number of approximate solutions have been tried in the art. These schemes use the Volterra model of the loudspeaker to find a predistortion filter that is an approximation to the loudspeaker's nonlinear inverse. Typically, the approximate inverse has only a linear component and a second order or quadratic component. FIG. 3 illustrates a model in which G1 and G2 are the linear and quadratic parts of the Volterra inverse.
The linear part is typically selected to completely compensate for the loudspeaker's linear distortion (G1=H1−1) as described above. The second order or quadratic component of the predistortion filter is selected to completely compensate for the quadratic distortion of the loudspeaker (G2=H1−1H2H1−1). As a by-product of this compensation scheme, extraneous third, fourth, and higher order nonlinearities are introduced. Higher order (the so-called p-th order) predistortion filters are used to construct a better approximation to the nonlinear inverse. In the case of such filters, higher order nonlinearities are introduced at the loudspeaker output.
The p-th order Volterra inverse converges to the real inverse only if certain conditions are met. For small signal levels, Volterra preinverse improves the perceived sound quality from loudspeakers. For high playback levels (e.g., a sound level required in a multimedia application when the loudspeaker is at about an arm's length from the ear such as in a videophone or teleconferencing with speaker phone as opposed to a low playback level where there is a comfortable sound level when the loudspeaker is close to the ear as in voice communication with cell phones), the p-th order Volterra inverse may not converge to the exact nonlinear inverse and as a result the extra distortions introduced by the predistortion filter may be worse than the original uncompensated loudspeaker distortions. The structure of the p-th order Volterra inverse is such that compensation may be made for linear distortions at a high cost for nonlinear distortions. For large input levels, the third, fourth and higher order distortions become larger than the compensated distortions, thereby rendering the precompensation scheme useless. As a result, the sound quality of the Volterra precompensated loudspeaker may be lower than the uncompensated case. Thus, the nature of the Volterra model of the loudspeaker is such that it leads to an unstable exact nonlinear inverse and therefore results in a pseudo-exact inverse.
The loudspeaker model can be approximated over short time frames using a memoryless Wiener or Hammerstein model. The advantage of this model is that it leads to a guaranteed stable inverse. The disadvantage of this model is that it does not take into account memories of linear and nonlinear kernels and leads to a poor model of the loudspeaker.
Therefore, a method is needed to overcome the limitations of the present schemes at high playback levels.